package com.sys.SysDataView.service.impl;

import com.sys.SysDataView.domain.SysDataView;
import com.sys.SysDataView.mapper.SysDataViewMapper;
import com.sys.SysDataView.service.SysDataViewService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * 数据统计ervice业务层处理
 * 
 * @author ruoyi
 * @date 2025-09-03
 */
@Service
public class SysDataViewServiceImpl implements SysDataViewService {

    @Autowired
    private SysDataViewMapper sysDataViewMapper;

    @Override
    public SysDataView getStatistics() {
        // 直接调用 Mapper 方法获取统计结果（XML 中已完成数据聚合）
        return sysDataViewMapper.selectStatistics();
    }

    @Override
    public SysDataView getStatisticsNew() {
        // 创建返回对象
        SysDataView dataView = new SysDataView();

        try {
            // 分别调用各个独立的查询方法
            dataView.setAreaTotal(sysDataViewMapper.selectAreaTotal());
            dataView.setTankTotal(sysDataViewMapper.selectTankTotal());
            dataView.setBreeding(sysDataViewMapper.selectBreedingCount());
            dataView.setBreedingDone(sysDataViewMapper.selectBreedingDoneCount());
            dataView.setNormal(sysDataViewMapper.selectNormalCount());
            dataView.setWarning(sysDataViewMapper.selectWarningCount());
            dataView.setDanger(sysDataViewMapper.selectDangerCount());

        } catch (Exception e) {
            // 异常处理，可以记录日志或设置默认值
            // 例如：如果某个查询失败，可以设置默认值0
            handleException(dataView, e);
        }

        return dataView;
    }
    private void handleException(SysDataView dataView, Exception e) {
        // 异常处理逻辑，确保不会返回null
        if (dataView.getAreaTotal() == null) dataView.setAreaTotal(0);
        if (dataView.getTankTotal() == null) dataView.setTankTotal(0);
        if (dataView.getBreeding() == null) dataView.setBreeding(0);
        if (dataView.getBreedingDone() == null) dataView.setBreedingDone(0);
        if (dataView.getNormal() == null) dataView.setNormal(0);
        if (dataView.getWarning() == null) dataView.setWarning(0);
        if (dataView.getDanger() == null) dataView.setDanger(0);
    }
}